/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package otcapp.controlador;

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import otcapp.controlador.jinternalFrame.ABMUsuariosPantalla;
import otcapp.controlador.modeloTablas.ModeloTablaUsuario;
import otcapp.controlador.modelocombobox.ModeloComboPerfilUsuario;
import otcapp.controlador.modelocombobox.ModeloComboProfesional;
import otcapp.controlador.seguridadDecoradores.FabricaContrladores;
import otcapp.experto.ExpertoConsultarPersonal;
import otcapp.experto.ExpertoSeguridad;
import otcapp.experto.excepciones.ExpertoConsultarPersonalException;
import otcapp.fabricas.FabricaExpertos;

/**
 *
 * @author diego
 */
public class ABMUsuariosControlador implements Controlador {

    private ABMUsuariosPantalla pantalla;
    private ExpertoSeguridad experto;

    public ABMUsuariosControlador() {
        pantalla = new ABMUsuariosPantalla();
        experto = (ExpertoSeguridad) FabricaExpertos.getInstancia().getExperto(FabricaExpertos.expertos.SEGURIDAD);

        pantalla.getTblUsuarios().setModel(new ModeloTablaUsuario());

        pantalla.getBtnABMPersonal().addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                iniciarABMProfesional();
            }
        });
        
        pantalla.getBtnABMPerfiles().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                iniciarABMPerfiles();
            }
        });
        
        pantalla.getBtnSalir().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                finalizar();
            }
        });

    }

    @Override
    public void iniciar() {

        ((ModeloTablaUsuario) pantalla.getTblUsuarios().getModel()).setListaElementos(experto.buscarUsuarios());
        iniciarCombos();
        pantalla.setVisible(true);

    }

    private void iniciarCombos() {
        pantalla.getCbxPerfil().setModel(new ModeloComboPerfilUsuario(experto.buscarPerfiles()));
        try {
            pantalla.getCbxPersonal().setModel(new ModeloComboProfesional(((ExpertoConsultarPersonal) FabricaExpertos.getInstancia().getExperto(FabricaExpertos.expertos.CONSULTAR_PERSONAL)).buscarPersonalALL()));
        } catch (ExpertoConsultarPersonalException ex) {
            pantalla.getCbxPersonal().setModel(new ModeloComboProfesional(null));
        }
    }

    @Override
    public void finalizar() {
        pantalla.setVisible(false);
    }

    @Override
    public Component getPantalla() {
        return pantalla;
    }

    @Override
    public void continuar() {
        iniciarCombos();
        pantalla.setVisible(true);
    }

    private void iniciarABMProfesional() {
        ((ABMPersonalControlador) ((ControladorPrincipal) FabricaContrladores.getInstancia().getControlador(FabricaContrladores.controlador.PRINCIPAL)).iniciarContrlador(ControladorPrincipal.controlador.ABM_PERSONAL)).setRetornoABMUsuarios(true);
    }
    
    private void iniciarABMPerfiles(){
        ((ControladorPrincipal) FabricaContrladores.getInstancia().getControlador(FabricaContrladores.controlador.PRINCIPAL)).iniciarContrlador(ControladorPrincipal.controlador.PERFILES);
    }
}
